//axios请求封装
import axios from 'axios'

const errorCode = {
  400: '请求错误',
  401: '无效的会话，或者会话已过期，请重新登录。',
  403: '当前操作没有权限',
  404: '请求错误,未找到该资源',
  405: '请求方法未允许',
  408: '请求超时',
  501: '网络未实现',
  502: '网络错误',
  503: '服务不可用',
  504: '网络超时',
  505: 'http版本不支持该请求',
  default: '系统未知错误，请反馈给管理员'
}

const service = axios.create({
  baseURL: import.meta.env.VITE_APP_BASE_API,
  timeout: 10000 // 超时时间 单位是ms
})

// 响应拦截器
service.interceptors.response.use(
  (response) => {
    //接收到响应数据并成功后的一些共有的处理
    // 未设置状态码则默认成功状态
    const code = response.data.code || 200
    // 获取错误信息
    const msg = errorCode[code] || response.data.msg || errorCode['default']

    return {
      success: true,
      code: code,
      data: response.data,
      msg: msg
    }
  },
  (error) => {
    /***** 接收到异常响应的处理开始 *****/
    let msg = ''
    if (error && error.response) {
      // 2.根据响应码具体处理
      msg = error.response.data.msg
      if (error.response.status !== 500) {
        msg = errorCode[error.response.status] || error.response.data.msg || errorCode['default']
      }
    } else {
      msg = '连接服务器失败'
    }
    return {
      success: false,
      code: error && error.response ? error.response.status : 500,
      msg: msg
    }
  }
)
export default service
